package com.itheima.test01;

import java.util.concurrent.ConcurrentHashMap;

/*
题目一:
	请使用ConcurrentHashMap定义一个线程安全的Map，使用两个线程访问它：
	第一个线程：向集合中添加键、值都是：1--10000的数字；
	第二个线程：向集合中添加键、值都是：10001--20000的数字；
	确保两个线程全部操作集合完毕，然后打印集合的每个元素。
 */
public class Test {
    public static void main(String[] args) throws InterruptedException {
        ConcurrentHashMap<Integer, Integer> chm = new ConcurrentHashMap<>();
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 1; i < 10000+1; i++) {
//                    try {
                        chm.put(i,i);
//                        System.out.println(Thread.currentThread().getName() + "向集合中添加了键：" + i + "，值：" + i);
//                        Thread.sleep(1);
//                    } catch (InterruptedException e) {
//                        e.printStackTrace();
//                    }
                }
            }
        },"线程1");

        Thread t2 = new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 10001; i < 20000+1; i++) {
//                    try {
                        chm.put(i,i);
//                        System.out.println(Thread.currentThread().getName() + "向集合中添加了键：" + i + "，值：" + i);
//                        Thread.sleep(2);
//                    } catch (InterruptedException e) {
//                        e.printStackTrace();
//                    }
                }
            }
        },"线程2");

        t1.start();
        t2.start();
        Thread.sleep(2000);

        ConcurrentHashMap.KeySetView<Integer, Integer> integers = chm.keySet();
        for (Integer key : integers) {
            int value = chm.get(key);
            System.out.println("键:" + key + ",值:" + value);
        }
    }
}
